package rescsa.gob.pe.requerimiento.action;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.dao.DuplicateKeyException;

import rescsa.gob.pe.requerimiento.bean.DetalleRequerimientoPersonaBEAN;
import rescsa.gob.pe.requerimiento.bean.RequerimientoBEAN;
import rescsa.gob.pe.requerimiento.service.RequerimientoServiceImplementacion;
import rescsa.gob.pe.seguridad.bean.UsuarioBEAN;
import rescsa.gob.pe.solicitudrequerimiento.bean.SolicitudRequerimientoBEAN;
import rescsa.gob.pe.solicitudrequerimiento.service.SolicitudRequerimientoSevice;
import rescsa.gob.pe.tiporequerimiento.bean.TipoRequerimientoBEAN;
import rescsa.gob.pe.trabajo.bean.DetalleRequerimientoActividadBEAN;

import com.opensymphony.xwork2.ActionSupport;

public class VerificarSolicituddeRequerimientoAction extends ActionSupport implements ServletRequestAware, SessionAware{
	Map session;
	UsuarioBEAN usuariobean;
	/**
	 * 
	 */
	java.util.Date fecha = new java.util.Date();
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private SolicitudRequerimientoSevice isolicitudRequerimientoSevice;
	
	private List<SolicitudRequerimientoBEAN>listasolicitudes;
	
	private SolicitudRequerimientoBEAN verificarDTO;
	private SolicitudRequerimientoBEAN evaDTO;
	private RequerimientoBEAN requerimientoBEAN;
	private RequerimientoServiceImplementacion irequerimiento;
	private String codigoreq;
	private TipoRequerimientoBEAN tipoRequerimientoBEAN;
	private DetalleRequerimientoActividadBEAN detalleRequerimientoActividadBEAN;
	private DetalleRequerimientoPersonaBEAN requerimientoPersonaBEAN;
	//esta variable tiene que tener setter y getter obligatorio
	ArrayList<String> separado = new ArrayList<String>();
	public VerificarSolicituddeRequerimientoAction(){
		irequerimiento=new RequerimientoServiceImplementacion();
		isolicitudRequerimientoSevice=new SolicitudRequerimientoSevice();
		listasolicitudes=new ArrayList<SolicitudRequerimientoBEAN>();
		verificarDTO=new SolicitudRequerimientoBEAN();
		evaDTO=new SolicitudRequerimientoBEAN();
		requerimientoBEAN=new RequerimientoBEAN();
		tipoRequerimientoBEAN=new TipoRequerimientoBEAN();
		detalleRequerimientoActividadBEAN=new DetalleRequerimientoActividadBEAN();
		requerimientoPersonaBEAN=new DetalleRequerimientoPersonaBEAN();
	}
	public String verificarSolicituddeRequerimiento(){
//		try {
//			listasolicitudes=isolicitudRequerimientoSevice.listarTodasSolicitudes();
//			for (SolicitudRequerimientoBEAN aux : listasolicitudes) {
//				System.out.println("lista solicitue"+aux.getEstado());
//			}
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		
		
		return SUCCESS;
		
	}
	
	public String	verificarSolicituddeRequerimientoXEstado(){
		
		try {
			System.out.println("estado del combo  action "+verificarDTO.getEstado());
			
			listasolicitudes=isolicitudRequerimientoSevice.BuscarSolicitudRequerimientoxEstado(verificarDTO.getEstado());
			for (SolicitudRequerimientoBEAN aux : listasolicitudes) {
				System.out.println("lista solicitue x estado"+aux.getEstado());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		return SUCCESS;
	}
	public String evaluarSolicitudRegistrar(){
		System.out.println("estado del combo  action "+evaDTO.getEstado());
		
		
		System.out.println("entro evaluar nuevo req el codigo "+evaDTO.getCodigo_solicitud_requerimiento());
		
		System.out.println("nueva coigo reque "+codigoreq);
		if(evaDTO.getEstado().equals("REGISTRADO") ){
		try {
			
			//este metodo retorna la cadena con las rutas guardadas
			//evaDTO=isolicitudRequerimientoSevice.ListarRutasSolcitudes(evaDTO.getCodigo_solicitud_requerimiento());
			evaDTO=isolicitudRequerimientoSevice.ObtenerSolicitudxId(Integer.parseInt(evaDTO.getCodigo_solicitud_requerimiento()));
			
			
			System.out.println("Descripcion "+evaDTO.getDescripcion_alto_nivel());
			
			
			System.out.println("ruta larga "+evaDTO.getArchivo());
			//las guarda en esta variable temporal
			String rutas=evaDTO.getArchivo();
			//luego las separa y guarda en ruts
			String[] ruts= rutas.split(";");
			//finalmente las setea en la variable separado que es la que va al jsp como un arreglo
			 for (String str : ruts) {
				separado.add(str);
			}
//			ahora vamos al jsp 
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		
		}
		
		else{
			falla("Solo se evaluara solicitudes con estado REGISTRADO");
			return INPUT;
		}
		
		
		
		
		return SUCCESS;
	}
	
	
	public String evaluarOtrasSolicitud(){
		if(evaDTO.getEstado()!="REGISTRADO"){
		System.out.println("entro al if estado diferente del combo  action "+evaDTO.getEstado());
	try {
		evaDTO=isolicitudRequerimientoSevice.ObtenerSolicitudxId(Integer.parseInt(evaDTO.getCodigo_solicitud_requerimiento()));
		
			
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
		
		
	}
		return SUCCESS;
		
	}
	
	
	public String registrarRequerimiento() throws Exception{
		
		System.out.println("llego el estado"+requerimientoBEAN.getEstado());
		System.out.println("llego el des "+requerimientoBEAN.getDescripcion_bajo_nivel());
		System.out.println("llego tipo+");
		RequerimientoBEAN req= irequerimiento.obtenerultimoreq();
		requerimientoBEAN.setCodigo_solicitud_requerimiento(Integer.parseInt(evaDTO.getCodigo_solicitud_requerimiento()));
		requerimientoBEAN.setCodigo_requerimiento(req.getCodigo_requerimiento()+1);
		requerimientoBEAN.setFecha_registro(fecha);
		requerimientoBEAN.setCodigo_tipo_requerimiento(1);		
		
		
		usuariobean=(UsuarioBEAN)session.get("USUARIO");//AHI SE GUARDA LOS ATRIBUTOS DEL USUARIO Y PUEDO HACER LO QUE QUIERA CON ELLOS
		System.out.println("utilizando la sesion de id:------>"+usuariobean.getC_usuario());
		System.out.println("utilizando la sesion de id:------>"+usuariobean.getC_persona());
		System.out.println("utilizando la sesion de apellido:------>"+usuariobean.getN_ape_mat());
		session.get("usuario");
		
		irequerimiento.RegistrarRequerimiento(requerimientoBEAN);
		System.out.println("registro requerimeinto");
		
		
	
		
		try {
			requerimientoPersonaBEAN.setCodigo_solicitud_requerimiento(Integer.parseInt(evaDTO.getCodigo_solicitud_requerimiento()));
			requerimientoPersonaBEAN.setCodigo_persona(usuariobean.getC_persona());
			requerimientoPersonaBEAN.setFecha_registro(fecha);
			
			irequerimiento.Registrardetalle(requerimientoPersonaBEAN);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println("inserto detalle");
		//actualizar la solicitud
		try {
			isolicitudRequerimientoSevice.ActualizarSolicitudEvaluarSolicitud(evaDTO.getCodigo_solicitud_requerimiento());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		return SUCCESS;
	}
	
	//*************validacion para los mensajes
	private void mensaje(String msj) {
		addActionMessage(msj);
	}

	private void falla(String msj) {
		addActionError(msj);
	}
	//**************hasta aqui******************
	public SolicitudRequerimientoSevice getIsolicitudRequerimientoSevice() {
		return isolicitudRequerimientoSevice;
	}
	public void setIsolicitudRequerimientoSevice(
			SolicitudRequerimientoSevice isolicitudRequerimientoSevice) {
		this.isolicitudRequerimientoSevice = isolicitudRequerimientoSevice;
	}
	public List<SolicitudRequerimientoBEAN> getListasolicitudes() {
		return listasolicitudes;
	}
	public void setListasolicitudes(
			List<SolicitudRequerimientoBEAN> listasolicitudes) {
		this.listasolicitudes = listasolicitudes;
	}
	public SolicitudRequerimientoBEAN getVerificarDTO() {
		return verificarDTO;
	}
	public void setVerificarDTO(SolicitudRequerimientoBEAN verificarDTO) {
		this.verificarDTO = verificarDTO;
	}
	public SolicitudRequerimientoBEAN getEvaDTO() {
		return evaDTO;
	}
	public void setEvaDTO(SolicitudRequerimientoBEAN evaDTO) {
		this.evaDTO = evaDTO;
	}
	public ArrayList<String> getSeparado() {
		return separado;
	}
	public void setSeparado(ArrayList<String> separado) {
		this.separado = separado;
	}

	public RequerimientoBEAN getRequerimientoBEAN() {
		return requerimientoBEAN;
	}
	public void setRequerimientoBEAN(RequerimientoBEAN requerimientoBEAN) {
		this.requerimientoBEAN = requerimientoBEAN;
	}
	public RequerimientoServiceImplementacion getIrequerimiento() {
		return irequerimiento;
	}
	public void setIrequerimiento(RequerimientoServiceImplementacion irequerimiento) {
		this.irequerimiento = irequerimiento;
	}
	public String getCodigoreq() {
		return codigoreq;
	}
	public void setCodigoreq(String codigoreq) {
		this.codigoreq = codigoreq;
	}
	
	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		// TODO Auto-generated method stub
		
	}
	public Map getSession() {
		return session;
	}
	public void setSession(Map session) {
		this.session = session;
	}
	public UsuarioBEAN getUsuariobean() {
		return usuariobean;
	}
	public void setUsuariobean(UsuarioBEAN usuariobean) {
		this.usuariobean = usuariobean;
	}
	public java.util.Date getFecha() {
		return fecha;
	}
	public void setFecha(java.util.Date fecha) {
		this.fecha = fecha;
	}
	public TipoRequerimientoBEAN getTipoRequerimientoBEAN() {
		return tipoRequerimientoBEAN;
	}
	public void setTipoRequerimientoBEAN(TipoRequerimientoBEAN tipoRequerimientoBEAN) {
		this.tipoRequerimientoBEAN = tipoRequerimientoBEAN;
	}
	public DetalleRequerimientoActividadBEAN getDetalleRequerimientoActividadBEAN() {
		return detalleRequerimientoActividadBEAN;
	}
	public void setDetalleRequerimientoActividadBEAN(
			DetalleRequerimientoActividadBEAN detalleRequerimientoActividadBEAN) {
		this.detalleRequerimientoActividadBEAN = detalleRequerimientoActividadBEAN;
	}
	



	
	
	
}
